package com.itaming.lycheeframework.support.cipher;

/**
 * 加密器接口
 *
 * @author A.Ming
 */
public interface Encryptor<T extends Encryptor.Options> {

    /**
     * 加密
     *
     * @param data    待加密数据
     * @param options 加密器选项
     * @return 加密后的数据
     */
    byte[] encrypt(byte[] data, T options);

    /**
     * 解密
     *
     * @param data    待解密数据
     * @param options 加密器选项
     * @return 解密后的数据
     */
    byte[] decrypt(byte[] data, T options);

    /**
     * 加密器选项接口
     */
    interface Options {

        /**
         * 获取完整算法名称
         *
         * @return 完整算法名称
         */
        String getFullAlgorithm();

    }

}
